{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm",
      "gpuType": "V100",
      "authorship_tag": "ABX9TyNyCBpjd8ugXcIZZlMBpAu+",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "4eaec3b4412e4f10809a4c17e209d750": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_7ab4864df0464097ba050161b0819b99",
              "IPY_MODEL_25abef59703e4fee86f275489245859d",
              "IPY_MODEL_bb1d1ade78c74a1c8355e5535cbfca74"
            ],
            "layout": "IPY_MODEL_f68af81f0c3241c7a0b48f08faaea1b9"
          }
        },
        "7ab4864df0464097ba050161b0819b99": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_1ebf978e54bd47bc94274548070af72d",
            "placeholder": "​",
            "style": "IPY_MODEL_1d22cbd925e54ed4b795d6f643fbdd53",
            "value": "100%"
          }
        },
        "25abef59703e4fee86f275489245859d": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_127953bcb92246c3ac0d8d4627498b42",
            "max": 160,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_9a9a93ea0ed7424cb66474a46075effa",
            "value": 160
          }
        },
        "bb1d1ade78c74a1c8355e5535cbfca74": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_85cadecb85f64a9f9507e24de2c26c84",
            "placeholder": "​",
            "style": "IPY_MODEL_471ea3412e1649e49f7eeb514aefd6eb",
            "value": " 160/160 [03:32&lt;00:00,  1.25s/it]"
          }
        },
        "f68af81f0c3241c7a0b48f08faaea1b9": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "1ebf978e54bd47bc94274548070af72d": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "1d22cbd925e54ed4b795d6f643fbdd53": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "127953bcb92246c3ac0d8d4627498b42": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "9a9a93ea0ed7424cb66474a46075effa": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "85cadecb85f64a9f9507e24de2c26c84": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "471ea3412e1649e49f7eeb514aefd6eb": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/NielsRogge/Transformers-Tutorials/blob/master/UDOP/Fine_tune_UDOP_on_a_custom_dataset_(toy_RVL_CDIP_dataset).ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Fine-tune UDOP for document image classification\n",
        "\n",
        "In this tutorial, I'll showcase how one can fine-tune UDOP by Microsoft for document AI tasks such as classifying to which category a given document image belongs.\n",
        "\n",
        "UDOP is pretty similar to models like [Donut](https://huggingface.co/docs/transformers/en/model_doc/donut) and [Pix2Struct](https://huggingface.co/docs/transformers/model_doc/pix2struct) which take an image as input, and produce text as output using a vision-encoder, GPT-based text decoder architecture. However, unlike Donut and PixStruct, UDOP additionally leverages an OCR engine to help the model in producing the correct text.\n",
        "\n",
        "Said differently, you can view UDOP as a T5 model, but leveraging LayoutLMv3 as encoder combined with a T5 text decoder.\n",
        "\n",
        "## Set-up environment\n",
        "\n",
        "Let's start by installing the required libraries:\n",
        "\n",
        "* 🤗 Transformers for the UDOP model\n",
        "* 🤗 Dataset to load a toy dataset from the hub\n",
        "* SentencePiece for the tokenizer\n",
        "* Bitsandbytes for the memory-efficient 8-bit optimizer\n",
        "* Tesseract for the OCR engine."
      ],
      "metadata": {
        "id": "H8VI1ZR5r6Of"
      }
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "UxEscDRJr3ma",
        "outputId": "26546ef7-102e-4687-998e-c7a3c9c47034"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Cloning into 'transformers'...\n",
            "remote: Enumerating objects: 234893, done.\u001b[K\n",
            "remote: Counting objects: 100% (75/75), done.\u001b[K\n",
            "remote: Compressing objects: 100% (30/30), done.\u001b[K\n",
            "remote: Total 234893 (delta 39), reused 61 (delta 39), pack-reused 234818\u001b[K\n",
            "Receiving objects: 100% (234893/234893), 225.24 MiB | 23.48 MiB/s, done.\n",
            "Resolving deltas: 100% (166476/166476), done.\n",
            "  Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n",
            "  Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n",
            "  Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n",
            "  Building wheel for transformers (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n"
          ]
        }
      ],
      "source": [
        "!pip install -q git+https://github.com/huggingface/transformers.git"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!pip install -q datasets sentencepiece bitsandbytes"
      ],
      "metadata": {
        "id": "cdTE5SUNsOJB"
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "!sudo apt install tesseract-ocr\n",
        "!pip install -q pytesseract"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "__yMDnljuB4g",
        "outputId": "5b0e1978-7d1e-490e-ecde-cdddb6bda39e"
      },
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Reading package lists... Done\n",
            "Building dependency tree... Done\n",
            "Reading state information... Done\n",
            "tesseract-ocr is already the newest version (4.1.1-2.1build1).\n",
            "0 upgraded, 0 newly installed, 0 to remove and 35 not upgraded.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Load data\n",
        "\n",
        "Next, let's load a toy dataset from the 🤗, which I prepared. It's a subset of the [RVL-CDIP dataset](https://huggingface.co/datasets/aharley/rvl_cdip), which is a benchmark often used for document image classification.\n",
        "\n",
        "The docs for loading a custom dataset is [here](https://huggingface.co/docs/datasets/en/loading). You can optionally push it to the hub by calling `push_to_hub()` on your dataset, such that you can reload it using `load_dataset`."
      ],
      "metadata": {
        "id": "jEGjB5ogsPkJ"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from datasets import load_dataset\n",
        "\n",
        "dataset = load_dataset(\"nielsr/rvl_cdip_10_examples_per_class_donut\")"
      ],
      "metadata": {
        "id": "lT-Mn2_TsPCK"
      },
      "execution_count": 4,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "The dataset consists of a few document images with a corresponding label. We have both a training split and a test split."
      ],
      "metadata": {
        "id": "vQzWZFNPjagH"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dA7iCALftFN1",
        "outputId": "36be8244-651c-4109-8d3b-6eebf9a9b780"
      },
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "DatasetDict({\n",
              "    train: Dataset({\n",
              "        features: ['image', 'label', 'ground_truth'],\n",
              "        num_rows: 160\n",
              "    })\n",
              "    test: Dataset({\n",
              "        features: ['image', 'label', 'ground_truth'],\n",
              "        num_rows: 160\n",
              "    })\n",
              "})"
            ]
          },
          "metadata": {},
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Lets take a look at a random training example."
      ],
      "metadata": {
        "id": "XdSkCEr1jo2I"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "example = dataset[\"train\"][5]\n",
        "image = example['image']\n",
        "# let's make the image a bit smaller when visualizing\n",
        "width, height = image.size\n",
        "display(image.resize((int(width*0.5), int(height*0.5))))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 517
        },
        "id": "GmyroYiUtHg_",
        "outputId": "7e2af808-0873-446e-ef7a-8d649dd4de6d"
      },
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<PIL.Image.Image image mode=L size=377x500>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "We can load the id2label mapping of the RVL-CDIP dataset from the hub:"
      ],
      "metadata": {
        "id": "PAGss-RJj3no"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from huggingface_hub import hf_hub_download\n",
        "import json\n",
        "\n",
        "repo_id = \"huggingface/label-files\"\n",
        "filename = \"rvlcdip-id2label.json\"\n",
        "id2label = json.load(open(hf_hub_download(repo_id, filename, repo_type=\"dataset\"), \"r\"))\n",
        "id2label = {int(k):v for k,v in id2label.items()}\n",
        "print(id2label)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "FbEnAc1fMvlK",
        "outputId": "7e01cb3d-4898-4135-cff0-1de98dc924ed"
      },
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{0: 'letter', 1: 'form', 2: 'email', 3: 'handwritten', 4: 'advertisement', 5: 'scientific report', 6: 'scientific publication', 7: 'specification', 8: 'file folder', 9: 'news article', 10: 'budget', 11: 'invoice', 12: 'presentation', 13: 'questionnaire', 14: 'resume', 15: 'memo'}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "In this case, the image corresponds to a \"letter\"."
      ],
      "metadata": {
        "id": "Ox0u7HJlj63X"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "id2label[example[\"label\"]]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "id": "XwUYy8jfMkB1",
        "outputId": "9a187cc5-61d4-40f1-d252-0247ad6b0d04"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'letter'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "To prepare this pair of (image, label) for the model, we can leverage the `UdopProcessor` class.\n",
        "\n",
        "\n",
        "This class works very similar to LayoutLMv2/LayoutLMv3's processor: it prepares the inputs required by the model.\n",
        "\n",
        "Internally, it will:\n",
        "* use `LayoutLMv3ImageProcessor` to turn the image into `pixel_values` (by resizing, rescaling and normalizing the image), as well as to apply OCR on the image to get a list of words + corresponding coordinates. By default, Tesseract is used as OCR engine.\n",
        "- use `UdopTokenizer` to turn the words + coordinates into token-level `input_ids`, `attention_mask` and `bbox`.\n",
        "\n",
        "Note that one can also decide to use another OCR engine of choice. Refer to the docs for usage."
      ],
      "metadata": {
        "id": "5-QvK8sGkJPs"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from transformers import UdopProcessor\n",
        "\n",
        "processor = UdopProcessor.from_pretrained(\"microsoft/udop-large\")\n",
        "print(type(processor.image_processor))\n",
        "print(type(processor.tokenizer))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "B79kYxrhtQLa",
        "outputId": "34c4478a-8b82-48f6-db25-197b277496ef"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n",
            "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'transformers.models.layoutlmv3.image_processing_layoutlmv3.LayoutLMv3ImageProcessor'>\n",
            "<class 'transformers.models.udop.tokenization_udop_fast.UdopTokenizerFast'>\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "encoding = processor(images=image.convert(\"RGB\"), return_tensors=\"pt\")\n",
        "for k,v in encoding.items():\n",
        "  print(k,v.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "v1L0hR1Btz-i",
        "outputId": "a37e452f-4e34-4328-dc75-860201e26b50"
      },
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "input_ids torch.Size([1, 393])\n",
            "attention_mask torch.Size([1, 393])\n",
            "bbox torch.Size([1, 393, 4])\n",
            "pixel_values torch.Size([1, 3, 224, 224])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "processor.batch_decode(encoding.input_ids)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7MaOCKJMMQjs",
        "outputId": "52ce82f4-5097-4de9-febf-ffd4aa0f74cf"
      },
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['RJR INTER-OFFICE MEMORANDUM June 18, 1986 Jo: Or. Bob Suber From: Or. Deboreh A. Lee Ms. Cindy Fulp Ames results on sample H8! fron Hazleton Biotechnologies, Inc. Subject: The following results were obtained for sample i181 (Firnova Powder 850.005): 0% S9 ACTIVATION strain TA98—stroin TAIO® strain 1835 strain 1837 strain 1538 rev/ng sample<unk> (rev/ng sample) (rev/mg sample) (rev/ng sample) (rev/ng sample) -350 (neg) 9.30 (neg) 118 (neg) 0887 (neg) negative 10% $9 ACTIVATION strain TAS strain TAI@® strain 1835 strain 1537 strain 1538 (reving sample) (rev/ng sample) (rev/ng sample) (rev/na sample) <unk>rev/na sample) +183 (neg) +692 (neg) 1.03 (neg) 1.05 (neg) -816 (neg) The dose range tested vas 0, 100, 500, 1000, 2500, S000, and 10000 ug in 50 ul. There was no significant increase in revertant number with an increase in dose level for sample HB! uith or without $3 activation for any of the 5 strains. Conc] us ion: Please feel free to discuss these results with our leb. xe: Dr. C.K. Lee Or. 6.7. Burger Dr. J.R. Hayes o e re &</s>']"
            ]
          },
          "metadata": {},
          "execution_count": 11
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Load model\n",
        "\n",
        "Next, let's load the UDOP model which has been pre-trained already using a language modeling objective."
      ],
      "metadata": {
        "id": "cmNqJlR_H3d2"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from transformers import UdopForConditionalGeneration\n",
        "\n",
        "model = UdopForConditionalGeneration.from_pretrained(\"microsoft/udop-large\")"
      ],
      "metadata": {
        "id": "CRjqbZ81w6HN"
      },
      "execution_count": 12,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Create PyTorch Dataset\n",
        "\n",
        "Next we create a regular PyTorch dataset. Each item of the dataset consists of the pixel_values, input_ids, attention_mask, bbox inputs as well as corresponding labels for the model."
      ],
      "metadata": {
        "id": "4RlEpW0msdg8"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from torch.utils.data import Dataset\n",
        "\n",
        "class CustomDataset(Dataset):\n",
        "  def __init__(self, dataset, processor):\n",
        "    self.dataset = dataset\n",
        "    self.processor = processor\n",
        "\n",
        "  def __len__(self):\n",
        "    return len(self.dataset)\n",
        "\n",
        "  def __getitem__(self, idx):\n",
        "    # get item\n",
        "    sample = self.dataset[idx]\n",
        "\n",
        "    # prepare inputs for the model\n",
        "    image = sample[\"image\"].convert(\"RGB\")\n",
        "    encoding = self.processor(images=image, truncation=True, padding=\"max_length\", return_tensors=\"pt\")\n",
        "\n",
        "    encoding = {k:v.squeeze() for k,v in encoding.items()}\n",
        "\n",
        "    # prepare targets\n",
        "    label = id2label[sample[\"label\"]]\n",
        "    target_sequence = f\"document image classification. {label}\"\n",
        "    encoding[\"labels\"] = self.processor(text_target=target_sequence,\n",
        "                                        padding=\"max_length\", max_length=10, truncation=True,\n",
        "                                        return_tensors=\"pt\").input_ids.squeeze()\n",
        "\n",
        "    return encoding"
      ],
      "metadata": {
        "id": "gQ62pUpHsdFB"
      },
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "import datasets\n",
        "\n",
        "train_dataset = CustomDataset(dataset[\"train\"], processor)"
      ],
      "metadata": {
        "id": "_bw9odvDuwJW"
      },
      "execution_count": 14,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "train_example = train_dataset[8]\n",
        "\n",
        "print(train_example.keys())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6xdDLuCvu2y2",
        "outputId": "acb28592-643f-4572-d6bb-557b0227b67e"
      },
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "dict_keys(['input_ids', 'attention_mask', 'bbox', 'pixel_values', 'labels'])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(processor.batch_decode(train_example[\"input_ids\"]))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "l--cj9B1EfPI",
        "outputId": "5026e3cd-2652-4812-c825-7006b4d91a16"
      },
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['Doc', 'ex', 'der', '29,', '1964', 'Mr', '.', 'Dur', 'n', 'o', 'y', 'C', '.', 'You', 'n', 'At', 't', 'or', 'n', 'o', 'y', 'at', 'Law', '2', '21', 'Ash', 'n', 'un', 'street', 'P', '.', 'O', '.', 'Box', '5', '16', 'S', 'ault', 'Ste', ',', 'Vari', 'e', ',', 'Me', 'h', 'i', 'can', '4', '978', '4', '', 'AN', 'RE', 'P', 'LY', 'RE', 'FER', '70', ':', 'Our', 'Fil', 'o', 'Yo', '.', '25', '15', 'Joan', 'wi', 'ital', 'a', ',', 'Ad', 'n', 'r', 'x', '.', '', 'v', 'y', '.', 'Py', 'Lor', 'illard', 'end', 'A', 'erie', 'an', '’', 'To', 'b', 'acco', 'Company', 'Dear', 'K', 'r', ',', 'Vo', 'un', 't', 'I', 'have', 'rev', 'ies', 'filed', 'in', 'this', '4', 'your', 'No', 'tion', 'which', 'you', 'have', 'caused', 'to', 'be', '', 'n', 'at', 't', 'or', '.', 'I', 'be', 'l', 'd', 'c', 've', 'that', 'ran', 'y', 'of', 'the', '', 'n', 'atter', 's', 'of', '', 'u', 'h', 'ich', 'you', '', 'e', ':', 'at', 'this', 'particular', 'tine', '', 'd', 'n', 'e', 'o', 'far', 'as', 'the', 'pl', 'sack', 'n', ',', 'concerned', '', 'e', 'an', 'be', '', 't', 'a', 'kon', 'care', 'of', 'by', '', 'acre', 'chon', 't', 'e', 'When', 'you', 'arrive', 'here', ',', 'we', 'can', 'perhaps', 'discuss', 'this', 'matter', 'and', 'arrive', 'at', 'son', 'e', '', 're', 'th', 'o', 'd', 'of', '', 'eat', 'is', 'f', 'ying', 'your', 'desires', 'in', 'relation', 'to', 'the', 'Con', 'plain', 't', '.', 'Inc', 'ident', 'ally', ',', '', 'if', 'you', 'have', 'not', '.', 'as', 'cor', 'tained', 'the', 'tie', 'and', 'the', 'date', 'with', 'Ju', 'd', 'z', 'o', 'Brenn', 'en', ',', 'I', 'would', 'suc', 'roc', 't', 'that', 'you', 'do', 'so', 'before', 'making', '', 'th', 'o', 'trip', 'in', 'this', \"'\", 'ar', 'za', 'as', 'there', 'co', 'on', 's', 'to', 'be', '', 'a', 'very', 'la', 'r', 'co', 'number', 'of', 'notion', 's', 'scheduled', 'for', 'the', '', 'o', 'pon', 'ing', 'day', 'of', '', 'th', 'a', '', 'tern', '.', 'Since', 'rely', ',', 'WI', 'STE', '', '&', 'ga', 'A', 's', 'kat', 'ani', 's', 'n', 'Andrew', 'H', '.', 'Vi', 'sti', 'AM', 'h', '/', 'e', 'm', '', 'e', 'e', ':', 'Joan', 'W', 'vit', 'tal', 'a', '09', '4', '99', '09', '</s>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(processor.batch_decode(train_example[\"labels\"]))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fw7xuunQprHc",
        "outputId": "ed80b37b-b0ce-400e-9936-522c570382c8"
      },
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['document', 'image', 'classification', '.', 'letter', '</s>', '<pad>', '<pad>', '<pad>', '<pad>']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Create PyTorch DataLoader\n",
        "\n",
        "Next, we create a corresponding PyTorch DataLoader, which gives us batches of data. As the model is quite memory intensive, we'll use a batch size of 1 here, which can be combined with gradient accumulation/checkpoint to increase training efficiency.\n",
        "\n",
        "I highly recommend to read the [\"efficient training on a single GPU\"](https://huggingface.co/docs/transformers/en/perf_train_gpu_one) guide if you want to know more."
      ],
      "metadata": {
        "id": "49YNMJZqp9Ei"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from torch.utils.data import DataLoader\n",
        "\n",
        "train_dataloader = DataLoader(train_dataset, batch_size=1, shuffle=True)"
      ],
      "metadata": {
        "id": "Cz1-osANu5t8"
      },
      "execution_count": 18,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "batch = next(iter(train_dataloader))\n",
        "for k,v in batch.items():\n",
        "  print(k,v.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bjPimZlnvCPQ",
        "outputId": "92c770ed-6559-485c-9b03-71601389bc14"
      },
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "input_ids torch.Size([1, 512])\n",
            "attention_mask torch.Size([1, 512])\n",
            "bbox torch.Size([1, 512, 4])\n",
            "pixel_values torch.Size([1, 3, 224, 224])\n",
            "labels torch.Size([1, 10])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(processor.batch_decode(batch[\"input_ids\"][0]))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ufadiYubvFpX",
        "outputId": "a05673d8-c61d-434d-e9b9-0897e0a4b758"
      },
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['January', '29,', '1998', 'Bible', 'Opening', 'Re', 'mark', 's', '', '-', 'House', 'Commerce', 'Com', ':', 'Mr', '.', 'Chairman', 'and', 'Members', 'of', 'the', 'Committee', ':', '1', \"'\", 'm', 'Ge', 'off', 'Bible', '.', 'For', 'the', 'past', 'three', 'years', 'I', 'have', 'been', 'Chairman', 'and', 'Chief', 'Executive', 'Officer', 'of', 'Philip', 'Morris', 'Companies', '.', 'I', 'appreciate', 'the', 'opportunity', 'to', 'appear', 'before', 'the', 'Committee', 'today', 'and', 'to', 'discuss', 'with', 'you', 'the', 'Pro', 'posed', 'Resolution', '.', '1', 'am', 'proud', 'to', 'represent', 'the', 'largest', 'consumer', '-', 'product', 's', 'company', 'in', 'the', 'world', 'and', 'even', 'proud', 'er', 'of', 'our', 'more', 'than', '1', '50,000', 'employees', '.', '', '.', '', '.', '', '70,000', 'in', 'the', 'United', 'States', 'alone', '.', '', '.', '', '.', 'who', 'develop', ',', 'manufacture', 'and', 'market', 'leading', 'brands', 'in', 'the', 'tobacco', ',', 'food', 'and', 'beer', 'industries', '.', 'Mr', '.', 'Chairman', ',', 'I', \"'\", 'm', 'here', 'today', 'to', 'listen', 'as', 'well', 'as', 'to', 'speak', '.', 'I', 'want', 'to', 'assure', 'each', 'member', 'of', 'the', 'Committee', 'that', 'I', 'know', 'how', 'important', 'it', 'is', 'to', 'engage', 'in', 'two', '-', 'way', 'discussion', '.', 'I', 'recognize', 'that', 'the', 'tobacco', 'industry', 'is', 'the', 'subject', 'of', 'intense', 'criticism', 'for', 'its', 'past', 'actions', 'and', 'for', 'its', 'role', 'in', 'the', 'social', ',', 'political', 'and', 'legal', 'controversy', 'over', 'tobacco', 'products', 'And', 'many', 'of', 'the', 'authors', 'of', 'this', 'criticism', 'I', 'believe', 'to', 'be', 'reasonable', 'people', '.', 'We', 'have', 'arrived', 'at', 'today', '’', 's', 'hearing', 'after', '40', 'years', 'of', 'constant', 'and', 'increasingly', 'angry', 'litigation', 'and', 'conflict', '.', 'In', 'many', 'instances', ',', 'we', 'have', 'operated', 'as', '', 'if', 'we', 'felt', 'under', '', 'a', 'virtual', 'state', 'of', 'sie', 'ge', ',', 'which', 'too', 'often', 'has', 'result', 'e', 'd', 'in', 'our', 'failure', 'to', 'compromise', ',', 'cooperate', 'or', 'embrace', 'changes', 'sought', 'by', 'our', 'critic', 's', '.', '‘', 'That', 'failure', 'has', ',', 'in', 'turn', ',', 'led', 'to', 'more', 'and', 'even', 'greater', 'confrontation', ',', 'without', '', 're', 'solv', 'ing', 'any', 'of', 'the', 'controversial', 'issues', '.', 'In', 'hin', 'd', 's', 'ight', 'I', 'wish', 'that', ',', 'years', 'ago', ',', 'I', \"'\", 'd', 'had', 'the', 'for', 'e', 's', 'ight', 'to', 'try', 'and', 'find', 'common', 'ground', 'with', 'our', 'critic', 's', '.', 'A', '20', 'v', '8', 'L', 'p', 'L', 'o', 'z', '</s>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>', '<pad>']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(processor.batch_decode(batch[\"labels\"][0]))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "gLq4Mez-EnAv",
        "outputId": "55b11297-1f61-41b3-a55c-504b37415bb2"
      },
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['document', 'image', 'classification', '.', 'presentation', '</s>', '<pad>', '<pad>', '<pad>', '<pad>']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "batch[\"bbox\"].type()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "id": "3-ZrJuwPtx4D",
        "outputId": "6c5e1b0d-d80a-4386-925d-0170eb86eb02"
      },
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'torch.cuda.LongTensor'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 28
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Train the model\n",
        "\n",
        "Next, let's train the model!"
      ],
      "metadata": {
        "id": "aQnDnK3k81Ft"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import transformers\n",
        "import torch\n",
        "import bitsandbytes as bnb\n",
        "from tqdm.auto import tqdm\n",
        "\n",
        "transformers.utils.logging.set_verbosity_error()\n",
        "\n",
        "# we'll replace the memory-intensive AdamW by Adam-8bit\n",
        "# so rather than using this:\n",
        "# from torch.optim import AdamW\n",
        "# optimizer = AdamW(model.parameters(), lr=5e-5)\n",
        "# we'll use this:\n",
        "optimizer = bnb.optim.Adam8bit(model.parameters(), lr=5e-5)\n",
        "\n",
        "# put model on GPU\n",
        "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
        "model.to(device)\n",
        "\n",
        "model.train()\n",
        "for epoch in range(10):  # loop over the dataset multiple times\n",
        "  print(\"Epoch:\", epoch)\n",
        "  for batch in tqdm(train_dataloader):\n",
        "      # get the inputs;\n",
        "      batch = {k:v.to(device) for k,v in batch.items()}\n",
        "      input_ids = batch[\"input_ids\"]\n",
        "      attention_mask = batch[\"attention_mask\"]\n",
        "      bbox = batch[\"bbox\"]\n",
        "      pixel_values = batch[\"pixel_values\"]\n",
        "      labels = batch[\"labels\"]\n",
        "\n",
        "      # zero the parameter gradients\n",
        "      optimizer.zero_grad()\n",
        "\n",
        "      # forward pass\n",
        "      outputs = model(\n",
        "          input_ids=input_ids,\n",
        "          attention_mask=attention_mask,\n",
        "          bbox=bbox,\n",
        "          pixel_values=pixel_values,\n",
        "          labels=labels,\n",
        "      )\n",
        "      loss = outputs.loss\n",
        "      loss.backward()\n",
        "      optimizer.step()\n",
        "\n",
        "      print(\"Loss:\", loss.item())\n",
        "\n",
        "\n",
        "  if epoch % 2 == 0:\n",
        "      # run a random autoregressive generation\n",
        "      model.eval()\n",
        "\n",
        "      predictions = model.generate(input_ids=input_ids, attention_mask=attention_mask, bbox=bbox)\n",
        "      print(\"Predictions:\", processor.batch_decode(predictions, skip_special_tokens=True))\n",
        "\n",
        "      # put model back in training mode\n",
        "      model.train()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000,
          "referenced_widgets": [
            "4eaec3b4412e4f10809a4c17e209d750",
            "7ab4864df0464097ba050161b0819b99",
            "25abef59703e4fee86f275489245859d",
            "bb1d1ade78c74a1c8355e5535cbfca74",
            "f68af81f0c3241c7a0b48f08faaea1b9",
            "1ebf978e54bd47bc94274548070af72d",
            "1d22cbd925e54ed4b795d6f643fbdd53",
            "127953bcb92246c3ac0d8d4627498b42",
            "9a9a93ea0ed7424cb66474a46075effa",
            "85cadecb85f64a9f9507e24de2c26c84",
            "471ea3412e1649e49f7eeb514aefd6eb"
          ]
        },
        "id": "ikPhbTHl0-fQ",
        "outputId": "77ae1ada-f8ac-46f5-9ec2-c5d48324eed5"
      },
      "execution_count": 25,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch: 0\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/160 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "4eaec3b4412e4f10809a4c17e209d750"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Loss: 0.009311027824878693\n",
            "Loss: 0.698961079120636\n",
            "Loss: 0.6105748414993286\n",
            "Loss: 0.04573800787329674\n",
            "Loss: 0.017915325239300728\n",
            "Loss: 0.04596346244215965\n",
            "Loss: 0.005824372638016939\n",
            "Loss: 0.029294857755303383\n",
            "Loss: 0.05546893924474716\n",
            "Loss: 0.025749165564775467\n",
            "Loss: 0.5225600004196167\n",
            "Loss: 0.6716193556785583\n",
            "Loss: 0.10908721387386322\n",
            "Loss: 0.18589894473552704\n",
            "Loss: 0.030583759769797325\n",
            "Loss: 0.13334789872169495\n",
            "Loss: 0.38007161021232605\n",
            "Loss: 0.041963137686252594\n",
            "Loss: 0.007802598178386688\n",
            "Loss: 0.11939841508865356\n",
            "Loss: 0.23295409977436066\n",
            "Loss: 0.009234707802534103\n",
            "Loss: 0.8880694508552551\n",
            "Loss: 0.0046111224219202995\n",
            "Loss: 0.21347686648368835\n",
            "Loss: 0.014984461478888988\n",
            "Loss: 0.0041926768608391285\n",
            "Loss: 0.9880384206771851\n",
            "Loss: 0.3298519551753998\n",
            "Loss: 0.19496679306030273\n",
            "Loss: 0.6379857659339905\n",
            "Loss: 0.05337008833885193\n",
            "Loss: 0.1607438176870346\n",
            "Loss: 0.15273332595825195\n",
            "Loss: 0.2749519646167755\n",
            "Loss: 0.0502079613506794\n",
            "Loss: 0.02470693178474903\n",
            "Loss: 0.17771443724632263\n",
            "Loss: 0.5299607515335083\n",
            "Loss: 0.32925716042518616\n",
            "Loss: 0.003907535225152969\n",
            "Loss: 0.012209292501211166\n",
            "Loss: 0.0018663586815819144\n",
            "Loss: 0.3834989368915558\n",
            "Loss: 0.2908947467803955\n",
            "Loss: 0.006871501449495554\n",
            "Loss: 0.061201997101306915\n",
            "Loss: 0.005946393124759197\n",
            "Loss: 0.055928416550159454\n",
            "Loss: 0.01183087658137083\n",
            "Loss: 0.0009738698718138039\n",
            "Loss: 0.074989914894104\n",
            "Loss: 0.008937643840909004\n",
            "Loss: 0.6548689007759094\n",
            "Loss: 0.11677940934896469\n",
            "Loss: 0.007492493838071823\n",
            "Loss: 0.4651755690574646\n",
            "Loss: 0.2894594669342041\n",
            "Loss: 0.005364204756915569\n",
            "Loss: 0.007142603397369385\n",
            "Loss: 1.0518548488616943\n",
            "Loss: 0.004005809314548969\n",
            "Loss: 0.6491903066635132\n",
            "Loss: 0.009284893982112408\n",
            "Loss: 0.1928902268409729\n",
            "Loss: 0.10363996028900146\n",
            "Loss: 0.019405482336878777\n",
            "Loss: 0.002829692792147398\n",
            "Loss: 0.06375396251678467\n",
            "Loss: 0.003689758013933897\n",
            "Loss: 0.17531445622444153\n",
            "Loss: 0.003764083608984947\n",
            "Loss: 0.03829258307814598\n",
            "Loss: 0.029801204800605774\n",
            "Loss: 0.21257419884204865\n",
            "Loss: 0.8127373456954956\n",
            "Loss: 0.0164831280708313\n",
            "Loss: 0.005067413207143545\n",
            "Loss: 0.07002885639667511\n",
            "Loss: 0.81123286485672\n",
            "Loss: 0.027410095557570457\n",
            "Loss: 0.1667032539844513\n",
            "Loss: 0.5766813158988953\n",
            "Loss: 0.09398932754993439\n",
            "Loss: 0.36394816637039185\n",
            "Loss: 0.008341778069734573\n",
            "Loss: 0.8404883146286011\n",
            "Loss: 0.2009916603565216\n",
            "Loss: 0.0039846086874604225\n",
            "Loss: 0.021502729505300522\n",
            "Loss: 0.1175568550825119\n",
            "Loss: 0.23264510929584503\n",
            "Loss: 0.0303613543510437\n",
            "Loss: 0.09960407018661499\n",
            "Loss: 0.02559378184378147\n",
            "Loss: 0.005301778204739094\n",
            "Loss: 0.07354550063610077\n",
            "Loss: 0.011039248667657375\n",
            "Loss: 0.006513906177133322\n",
            "Loss: 0.014490733854472637\n",
            "Loss: 0.0037838537245988846\n",
            "Loss: 0.022309955209493637\n",
            "Loss: 0.043385155498981476\n",
            "Loss: 0.3347720205783844\n",
            "Loss: 0.370769202709198\n",
            "Loss: 0.0035016071051359177\n",
            "Loss: 0.6011618375778198\n",
            "Loss: 0.009113604202866554\n",
            "Loss: 0.003968694247305393\n",
            "Loss: 0.2846488058567047\n",
            "Loss: 0.0689079761505127\n",
            "Loss: 0.1123175397515297\n",
            "Loss: 0.012996953912079334\n",
            "Loss: 0.0005902665434405208\n",
            "Loss: 0.0663786306977272\n",
            "Loss: 0.001598189934156835\n",
            "Loss: 0.2462558001279831\n",
            "Loss: 0.06730815768241882\n",
            "Loss: 0.0057199252769351006\n",
            "Loss: 0.01434054784476757\n",
            "Loss: 0.002281786873936653\n",
            "Loss: 0.002918628975749016\n",
            "Loss: 0.009178252890706062\n",
            "Loss: 0.0014348524855449796\n",
            "Loss: 0.5884107947349548\n",
            "Loss: 0.0048169419169425964\n",
            "Loss: 0.005169682204723358\n",
            "Loss: 0.061998289078474045\n",
            "Loss: 0.012191441841423512\n",
            "Loss: 0.5268527865409851\n",
            "Loss: 0.027709951624274254\n",
            "Loss: 0.08406845480203629\n",
            "Loss: 0.3461426794528961\n",
            "Loss: 0.021980229765176773\n",
            "Loss: 0.498788982629776\n",
            "Loss: 0.004952670074999332\n",
            "Loss: 0.05672619864344597\n",
            "Loss: 0.03878702595829964\n",
            "Loss: 0.22598746418952942\n",
            "Loss: 0.43827003240585327\n",
            "Loss: 0.04263576120138168\n",
            "Loss: 0.05931076407432556\n",
            "Loss: 0.023281624540686607\n",
            "Loss: 0.001287568244151771\n",
            "Loss: 0.023190978914499283\n",
            "Loss: 0.12222148478031158\n",
            "Loss: 0.02971009351313114\n",
            "Loss: 0.3763238489627838\n",
            "Loss: 0.005756414495408535\n",
            "Loss: 0.06830108165740967\n",
            "Loss: 0.32397106289863586\n",
            "Loss: 0.6219251155853271\n",
            "Loss: 0.010049963369965553\n",
            "Loss: 0.15161345899105072\n",
            "Loss: 0.02747710980474949\n",
            "Loss: 0.3005804121494293\n",
            "Loss: 0.0017833007732406259\n",
            "Loss: 0.26107528805732727\n",
            "Loss: 0.11810113489627838\n",
            "Loss: 0.018380746245384216\n"
          ]
        },
        {
          "output_type": "error",
          "ename": "RuntimeError",
          "evalue": "mean(): could not infer output dtype. Input dtype must be either a floating point or complex dtype. Got: Long",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-25-a6fef8ae9fe6>\u001b[0m in \u001b[0;36m<cell line: 20>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     49\u001b[0m   \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 51\u001b[0;31m   \u001b[0mpredictions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgenerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbbox\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     52\u001b[0m   \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Predictions:\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprocessor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbatch_decode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpredictions\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskip_special_tokens\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py\u001b[0m in \u001b[0;36mdecorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    113\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    114\u001b[0m         \u001b[0;32mwith\u001b[0m \u001b[0mctx_factory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 115\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    116\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    117\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/generation/utils.py\u001b[0m in \u001b[0;36mgenerate\u001b[0;34m(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, negative_prompt_ids, negative_prompt_attention_mask, **kwargs)\u001b[0m\n\u001b[1;32m   1392\u001b[0m             \u001b[0;31m# if model is encoder decoder encoder_outputs are created\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1393\u001b[0m             \u001b[0;31m# and added to `model_kwargs`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1394\u001b[0;31m             model_kwargs = self._prepare_encoder_decoder_kwargs_for_generation(\n\u001b[0m\u001b[1;32m   1395\u001b[0m                 \u001b[0minputs_tensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_kwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_input_name\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1396\u001b[0m             )\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/generation/utils.py\u001b[0m in \u001b[0;36m_prepare_encoder_decoder_kwargs_for_generation\u001b[0;34m(self, inputs_tensor, model_kwargs, model_input_name)\u001b[0m\n\u001b[1;32m    496\u001b[0m         \u001b[0mencoder_kwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"return_dict\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    497\u001b[0m         \u001b[0mencoder_kwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel_input_name\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minputs_tensor\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 498\u001b[0;31m         \u001b[0mmodel_kwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"encoder_outputs\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mModelOutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mencoder\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mencoder_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    499\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    500\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mmodel_kwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1516\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1517\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1518\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1519\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1520\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1525\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1526\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1527\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1528\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1529\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/udop/modeling_udop.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input_ids, attention_mask, encoder_hidden_states, encoder_attention_mask, inputs_embeds, pixel_values, head_mask, past_key_values, use_cache, output_attentions, output_hidden_states, return_dict, cross_attn_head_mask, position_bias, image_embeddings, bbox, visual_bbox, num_patches)\u001b[0m\n\u001b[1;32m   1414\u001b[0m             \u001b[0mposition_bias\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1415\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1416\u001b[0;31m             \u001b[0mposition_bias\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrelative_bias\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbbox\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1417\u001b[0m             \u001b[0mposition_bias\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mposition_bias\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mextended_attention_mask\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1418\u001b[0m         \u001b[0mencoder_decoder_position_bias\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1516\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1517\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1518\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1519\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1520\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1525\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1526\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1527\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1528\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1529\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/udop/modeling_udop.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, attention_mask, bbox)\u001b[0m\n\u001b[1;32m   1213\u001b[0m         \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1214\u001b[0m         \u001b[0;32mfor\u001b[0m \u001b[0mbias\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbiases\u001b[0m\u001b[0;34m:\u001b[0m  \u001b[0;31m# type: ignore\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1215\u001b[0;31m             \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbias\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1216\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1217\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1516\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1517\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1518\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1519\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1520\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1525\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1526\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1527\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1528\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1529\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/udop/modeling_udop.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, attention_mask, bbox)\u001b[0m\n\u001b[1;32m   1120\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpand\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1121\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1122\u001b[0;31m         \u001b[0mrp_bucket\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_bucket\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1123\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1124\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprefix_bucket\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/udop/modeling_udop.py\u001b[0m in \u001b[0;36mget_bucket\u001b[0;34m(self, attention_mask, bbox)\u001b[0m\n\u001b[1;32m   1092\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1093\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mget_bucket\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mTensor\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mDict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mAny\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mTensor\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1094\u001b[0;31m         \u001b[0mrelative_position\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_input\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1095\u001b[0m         rp_bucket: Tensor = get_relative_position_bucket(\n\u001b[1;32m   1096\u001b[0m             \u001b[0mrelative_position\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/udop/modeling_udop.py\u001b[0m in \u001b[0;36mprepare_input\u001b[0;34m(self, attention_mask, bbox)\u001b[0m\n\u001b[1;32m   1172\u001b[0m             \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Bbox is required for horizontal relative position bias\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1173\u001b[0m         \u001b[0;31m# get x positions of left point of bbox\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1174\u001b[0;31m         \u001b[0mhorizontal_position\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mTensor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1175\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1176\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_relative_position\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhorizontal_position\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mRuntimeError\u001b[0m: mean(): could not infer output dtype. Input dtype must be either a floating point or complex dtype. Got: Long"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Inference\n",
        "\n",
        "At inference time, it's recommended to leverage the generate method for autoregressive generation of text.\n",
        "\n",
        "Refer to [this blog post](https://huggingface.co/blog/how-to-generate) if you want to know all about the various ways of decoding text from Transformers."
      ],
      "metadata": {
        "id": "T9R_dwf8r_39"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# let's take an image from the original test set\n",
        "test_example = dataset[\"test\"][10]\n",
        "\n",
        "test_image = test_example[\"image\"]\n",
        "test_image"
      ],
      "metadata": {
        "id": "NXEcaTW8PmFZ",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "e2c3d5ec-f78b-4fa7-92ff-32d940077f81"
      },
      "execution_count": 42,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<PIL.TiffImagePlugin.TiffImageFile image mode=L size=777x1000>"
            ],
            "image/png": "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\n"
          },
          "metadata": {},
          "execution_count": 42
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# prepare the image for the model (OCR is applied by the processor)\n",
        "inputs = processor(test_image.convert(\"RGB\"), return_tensors=\"pt\").to(device)\n",
        "for k,v in inputs.items():\n",
        "  print(k,v.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "BEHNsMmquMsv",
        "outputId": "df8661cd-83e1-428d-99ba-1066cb7419ea"
      },
      "execution_count": 43,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "input_ids torch.Size([1, 246])\n",
            "attention_mask torch.Size([1, 246])\n",
            "bbox torch.Size([1, 246, 4])\n",
            "pixel_values torch.Size([1, 3, 224, 224])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "processor.batch_decode(inputs.input_ids)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ii5N7lypuUWH",
        "outputId": "7138b0c3-9a53-461c-d98f-5d60891679ad"
      },
      "execution_count": 44,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['14:40 SALCOM RABBIT SOFTURRE 33S 63746. POL Telefax Copy 1969-10-26. Ae SALCOM RABBIT SOFTWARE B.V. Meonthot 15 124 CP XoRTENHORF ‘the Netherlands 26, Okt. 1983 PHONE + 31-(0)35-62444 Ae, C TELEFAX: 31-(0)38-63746 t a 0. # Institut flr Diologische Forschung GmbH ARM: Herr pr. Ww. Gomm TBLERAKEs 09.49.2203. 303362 FROM___: Salcom RABBIT Software B.v. - Cor Ruger DATE. _+ 26. Oktober 1989 ‘TOTALS OF PAGES: 3 Schr gechrter Herr Gomm, anbei finden sie das Preisangebot Nr. 8910545. Mit freundlichen Grissen & ‘ ye : icon $na027 Sottnere B.<unk>. Cor Ruger Sales Represcntative OfL.bebbeor</s>']"
            ]
          },
          "metadata": {},
          "execution_count": 44
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# autoregressive generation\n",
        "model.eval()\n",
        "generated_ids = model.generate(**inputs, max_new_tokens=10)\n",
        "generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]\n",
        "print(generated_text)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ebMXSyPmuZcx",
        "outputId": "1542bd4a-ec90-40a5-a3a1-93ab65be0687"
      },
      "execution_count": 45,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "document image classification. form\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Let's compare that to the ground truth label:"
      ],
      "metadata": {
        "id": "MZiNRn0wvH8e"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "id2label[test_example[\"label\"]]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "id": "dp9_clDlvEeX",
        "outputId": "6e037ee1-1bd3-4f40-d3d3-885035436b00"
      },
      "execution_count": 46,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'form'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 46
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "E6fRJJ81wDFY"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}